#ifndef	ACL_SANE_BASENAME_INCLUDE_H
#define	ACL_SANE_BASENAME_INCLUDE_H

#ifdef	__cplusplus
extern "C" {
#endif

#include "acl_vstring.h"

/**
 * 从文件全路径中提取文件名，会去掉所有结果的/
 * @parm bp {ACL_VSTRING*} 存储结果的缓冲区，若为 NULL 则引用内部的线程局部存储
 * @return {char*} 永不为空
 *
 * 例如：/tmp/dir1/dir2/123.txt//，first+1指向'1'，last指向't'，取出first+1到last之间的文件名'123.txt'
 *
 * return "." for null or zero-length input
 * return "/" if input is all '/' characters
 */
ACL_API char *acl_sane_basename(ACL_VSTRING *bp, const char *path);

/**
 * 从文件全路径中提取文件所在目录
 * @parm bp {ACL_VSTRING*} 存储结果的缓冲区，若为 NULL 则引用内部的线程局部存储
 * @return {char*} 永不为空
 *
 * 例如：/tmp/dir1/dir2/123.txt//，last指向'2'，取出path到last之间的路径'/tmp/dir1/dir2'
 *
 * return "." for null or zero-length input
 * return "/" if input is all '/' characters
 * return "." for example "123.txt"
 */
ACL_API char *acl_sane_dirname(ACL_VSTRING *bp, const char *path);

#ifdef	__cplusplus
}
#endif

#endif
